<?php
/*
 * 留言本模型，负责管理留言本
 * $bookPath:留言本属性
 * */
class gbookModel{
    private $bookPath;//留言本文件
    private $data;//留言数据

    //设置留言本保存路径
    public function setBookPath($bookPath){
        $this->bookPath = $bookPath;
    }


    //获取留言本保存路径
    public function getBookPath(){
        return $this->bookPath;
    }

    //打开文件
    public function open(){

    }

    //关闭文件
    public function close(){

    }

    //读取文件
    public function read(){
        return file_get_contents($this->bookPath);
    }

    //写入留言
    public function write($data){
        //填充数据
        $this->data = self::safe($data)->name."&".self::safe($data)->email."said:".self::safe($data)->content."\r\n";
        //获取到数据之后,将数据写入文件
        return file_put_contents($this->bookPath,$this->data,FILE_APPEND);
    }

    //模拟数据的安全处理,先拆包再打包
    //$data需要解包的数据
    public static function safe($data){
        //对对象进行反射
        $reflect = new ReflectionObject($data);
        //获取当前对象的所有的属性
        $props = $reflect->getProperties();
        //声明一个php的对象
        $messagebox = new stdClass();
        foreach ($props as $prop){
            //获取属性名称
            $ivar = $prop->getName();
            //读取属性的值 (读取当前对象的值)
            $messagebox->$ivar = trim($prop->getValue($data));
        }
        return $messagebox;
    }


    //删除文件里面的数据
    public function delete(){
        file_put_contents($this->bookPath,'');
    }


    public function readByPage(){
        //这边的读取是根据换行符进行读取的
        $handle = file($this->bookPath);
        $count = count($handle);
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
        if($page < 1 || $page > $count){
            $page = 1;
        }
        $pnum = 5;
        $begin = ($page - 1) * $pnum;
        $end = ($begin+$pnum) > $count ? $count : $begin + $pnum;
        for($i = $begin ; $i < $end ; $i++){
            echo '<strong class="info_line">'.($i+1).' '.$handle[$i].'</strong>'.'<br/>';
        }
        for($i = 1 ; $i <= ceil($count/$pnum) ; $i++){
            if($page == $i){
                echo "<a class='page_e page_checked' href='?page=${i}'>${i}</a> ";
            }else{
                echo "<a class='page_e' href='?page=${i}'>${i}</a> ";
            }
        }
    }


    //获取总页码数
    public function getTotalPage(){
        $handle = file($this->bookPath);
        $count = count($handle);
        $pnum = 5;
        $total_page = ceil($count/$pnum);
        return $total_page;
    }

}
